'use strict';
define("vs/nls!vs/languages/typescript/common/features/quickFixMainActions", ["vs/nls", "vs/nls!vs/languages/typescript/common/typescriptMode"], function (c, b) {
    return c.create("vs/languages/typescript/common/features/quickFixMainActions", b)
});
define("vs/languages/typescript/common/typescript", ["require", "exports", "vs/base/common/winjs.base", "vs/platform/platform", "vs/base/common/uri"], function (c, b, m, l, f) {
    !function (b) {
        b[b.Changed = 0] = "Changed";
        b[b.Added = 1] = "Added";
        b[b.Removed = 2] = "Removed"
    }(b.ChangeKind || (b.ChangeKind = {}));
    var e = b.ChangeKind;
    b.defaultLib = f["default"].create("ts", "defaultlib", "/vs/text!vs/languages/typescript/common/lib/lib.d.ts");
    b.defaultLib = f["default"].create("ts", "defaultlib", "/vs/text!vs/languages/typescript/common/lib/annieCore.d.ts");
    b.defaultLibES6 = f["default"].create("ts", "defaultlib", "/vs/text!vs/languages/typescript/common/lib/lib.es6.d.ts");
    b.defaultLibES6 = f["default"].create("ts", "defaultlib", "/vs/text!vs/languages/typescript/common/lib/annieUI.d.ts");
    b.isDefaultLib = function (b) {
        return "string" == typeof b ? 0 === b.indexOf("ts://defaultlib") : "ts" === b.scheme && "defaultlib" === b.authority
    };
    b.virtualProjectResource = f["default"].create("ts", "projects", "/virtual/1");
    var q = function () {
        function g() {
            this._needsProjectUpdate = !1;
            this._fileChanges = [];
            this._projectChange = {kind: e.Changed, resource: b.virtualProjectResource, files: [], options: void 0}
        }

        return g.prototype.setConsumer = function (b) {
            this._consumer = b
        }, g.prototype.resolveProjects = function () {
            var b = [];
            return this._fileChanges.length && (b.push(this._consumer.acceptFileChanges(this._fileChanges.slice(0))), this._fileChanges.length = 0), this._needsProjectUpdate && (b.push(this._consumer.acceptProjectChanges([this._projectChange])), this._needsProjectUpdate = !1), m.Promise.join(b)
        }, g.prototype.resolveFiles = function () {
        }, g.prototype.addExtraLib = function (b, g) {
            var c = g ? f["default"].file(g) : f["default"].create("extralib", void 0, Date.now().toString());
            this._needsProjectUpdate = !0;
            this._projectChange.files.push(c);
            this._fileChanges.push({kind: e.Added, resource: c, content: b})
        }, g.prototype.setCompilerOptions = function (b) {
            this._needsProjectUpdate = !0;
            this._projectChange.options = b
        }, g
    }();
    b.DefaultProjectResolver = q;
    !function (b) {
        b.ProjectResolver = new q;
        b.addExtraLib = function (e, c) {
            b.ProjectResolver.addExtraLib(e, c)
        };
        b.setCompilerOptions = function (e) {
            b.ProjectResolver.setCompilerOptions(e)
        }
    }(b.Defaults || (b.Defaults = {}));
    !function (b) {
        b.Identifier = "typescript";
        l.Registry.add(b.Identifier, b);
        var e;
        b.setProjectResolver = function (b) {
            e = b
        };
        b.getProjectResolver = function () {
            return e
        }
    }(b.Extensions || (b.Extensions = {}))
});
var __decorate = this && this.__decorate || function (c, b, m, l) {
    if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) return Reflect.decorate(c, b, m, l);
    switch (arguments.length) {
        case 2:
            return c.reduceRight(function (b, e) {
                return e && e(b) || b
            }, b);
        case 3:
            return c.reduceRight(function (c, e) {
                return void(e && e(b, m))
            }, void 0);
        case 4:
            return c.reduceRight(function (c, e) {
                return e && e(b, m, c) || c
            }, l)
    }
}, __param = this && this.__param || function (c, b) {
    return function (m, l) {
        b(m, l, c)
    }
};
define("vs/languages/typescript/common/features/quickFixMainActions", "require exports vs/nls!vs/languages/typescript/common/features/quickFixMainActions vs/base/common/strings vs/base/common/winjs.base vs/base/common/paths vs/platform/files/common/files vs/platform/request/common/request vs/platform/workspace/common/workspace".split(" "), function (c, b, m, l, f, e, q, g, w) {
    c = function () {
        function b(e, c, h) {
            this._requestService = e;
            this._fileService = c;
            this._contextService = h
        }

        return b.prototype.evaluate = function (b, e, c) {
            e = JSON.parse(c);
            switch (e.type) {
                case "typedefinitions":
                    return this.evaluateAddTypeDefinitionProposal(e.name, b)
            }
            return f.Promise.as(null)
        }, b.prototype.evaluateAddTypeDefinitionProposal = function (b, c) {
            var h = this, g = "typings/" + b, d = this._contextService.toResource(g),
                f = this._contextService.toResource("jsconfig.json");
            if (d && f) {
                var p = this._contextService.toWorkspaceRelativePath(c);
                p || (p = c.fsPath);
                p = l.rtrim(e.dirname(p), "/");
                e.relative(p, g);
                return this._fileService.resolveFile(d).then(function (b) {
                    return {message: m.localize(0, null, g)}
                }, function (e) {
                    var c = "https://raw.githubusercontent.com/borisyankov/DefinitelyTyped/master/" + b;
                    return h._requestService.makeRequest({url: c, followRedirects: 5}).then(function (b) {
                        return h._fileService.createFile(d, b.responseText).then(function (b) {
                            return h._fileService.resolveFile(f).then(function (b) {
                                return {message: m.localize(1, null, g)}
                            }, function (b) {
                                return {message: m.localize(2, null, g)}
                            })
                        }, function (b) {
                            return {message: m.localize(3, null, g, b.toString())}
                        })
                    }, function (b) {
                        return {message: m.localize(4, null, c, b.responseText)}
                    })
                })
            }
        }, b = __decorate([__param(0, g.IRequestService), __param(1, q.IFileService), __param(2, w.IWorkspaceContextService)], b)
    }();
    b.QuickFixMainActions = c
});
define("vs/languages/typescript/common/features/tokenization", "require exports vs/base/common/strings vs/base/common/arrays vs/base/common/collections vs/editor/common/modes vs/editor/common/modes/supports vs/languages/typescript/common/lib/typescriptServices vs/editor/common/modes/abstractState".split(" "), function (c, b, m, l, f, e, q, g, w) {
    function x(b, c, d, f, k, a, v) {
        function n(a, b, v) {
            0 !== u.tokens.length && void 0 === v && l.tail(u.tokens).type === b || u.tokens.push(new q.Token(a, b, v || e.Bracket.None))
        }

        void 0 === a && (a = 0);
        var u = {
            tokens: [],
            actualStopOffset: a + k.length,
            endState: new h(f.getMode(), f.getStateData(), f.language, 0, !1),
            modeTransitions: [{startIndex: a, mode: f.getMode()}]
        };
        v = f.language === A.TypeScript;
        if (!v && C(f, a, k, n)) return u;
        var y = d.getClassificationsForLine(k, f.eolState, !0);
        d = 0;
        u.endState.eolState = y.finalLexState;
        u.endState.inJsDocComment = 1 === y.finalLexState && (f.inJsDocComment || /\/\*\*.*$/.test(k));
        f = 0;
        for (y = y.entries; f < y.length; f++) {
            var B, z = y[f], D = e.Bracket.None;
            z.classification === g.TokenClass.Punctuation ? (B = k.charCodeAt(d), D = t[B] || e.Bracket.None, B = b[B] || c[z.classification], n(d + a, B, D)) : z.classification === g.TokenClass.Comment ? u.endState.inJsDocComment || /\/\*\*.*\*\//.test(k.substr(d, z.length)) ? n(d + a, v ? "comment.doc.ts" : "comment.doc.js", e.Bracket.None) : n(d + a, v ? "comment.ts" : "comment.js", e.Bracket.None) : n(d + a, c[z.classification] || m.empty, void 0);
            d += z.length
        }
        return u
    }

    function C(b, c, f, d) {
        return 0 === f.indexOf("#!") ? (d(c, "comment.shebang", e.Bracket.None), !0) : void 0
    }

    !function (b) {
        b[b.TypeScript = 0] = "TypeScript";
        b[b.EcmaScript5 = 1] = "EcmaScript5"
    }(b.Language || (b.Language = {}));
    var A = b.Language;
    b.createTokenizationSupport = function (b, c) {
        var e = g.createClassifier(), f = c === A.TypeScript ? d : p, l = c === A.TypeScript ? r : k;
        return {
            shouldGenerateEmbeddedModels: !1, getInitialState: function () {
                return new h(b, null, c, 0, !1)
            }, tokenize: function (a, b, n, u) {
                return x(f, l, e, b, a, n, u)
            }
        }
    };
    var h = function () {
        function b(c, e, f, d, a) {
            this._mode = c;
            this._state = e;
            this.language = f;
            this.eolState = d;
            this.inJsDocComment = a
        }

        return b.prototype.clone = function () {
            return new b(this._mode, w.AbstractState.safeClone(this._state), this.language, this.eolState, this.inJsDocComment)
        }, b.prototype.equals = function (c) {
            return c === this ? !0 : c && c instanceof b ? this.eolState !== c.eolState ? !1 : this.inJsDocComment !== c.inJsDocComment ? !1 : w.AbstractState.safeEquals(this._state, c._state) : !1
        }, b.prototype.getMode = function () {
            return this._mode
        }, b.prototype.tokenize = function (b) {
            throw Error();
        }, b.prototype.getStateData = function () {
            return this._state
        }, b.prototype.setStateData = function (b) {
            this._state = b
        }, b
    }(), t = f.createNumberDictionary();
    t[40] = e.Bracket.Open;
    t[41] = e.Bracket.Close;
    t[123] = e.Bracket.Open;
    t[125] = e.Bracket.Close;
    t[91] = e.Bracket.Open;
    t[93] = e.Bracket.Close;
    var d = f.createNumberDictionary();
    d[40] = "delimiter.parenthesis.ts";
    d[41] = "delimiter.parenthesis.ts";
    d[123] = "delimiter.bracket.ts";
    d[125] = "delimiter.bracket.ts";
    d[91] = "delimiter.array.ts";
    d[93] = "delimiter.array.ts";
    var r = f.createNumberDictionary();
    r[g.TokenClass.Identifier] = "identifier.ts";
    r[g.TokenClass.Keyword] = "keyword.ts";
    r[g.TokenClass.Operator] = "delimiter.ts";
    r[g.TokenClass.Punctuation] = "delimiter.ts";
    r[g.TokenClass.NumberLiteral] = "number.ts";
    r[g.TokenClass.RegExpLiteral] = "regexp.ts";
    r[g.TokenClass.StringLiteral] = "string.ts";
    var p = f.createNumberDictionary();
    p[40] = "delimiter.parenthesis.js";
    p[41] = "delimiter.parenthesis.js";
    p[123] = "delimiter.bracket.js";
    p[125] = "delimiter.bracket.js";
    p[91] = "delimiter.array.js";
    p[93] = "delimiter.array.js";
    var k = f.createNumberDictionary();
    k[g.TokenClass.Identifier] = "identifier.js";
    k[g.TokenClass.Keyword] = "keyword.js";
    k[g.TokenClass.Operator] = "delimiter.js";
    k[g.TokenClass.Punctuation] = "delimiter.js";
    k[g.TokenClass.NumberLiteral] = "number.js";
    k[g.TokenClass.RegExpLiteral] = "regexp.js";
    k[g.TokenClass.StringLiteral] = "string.js"
});
var __extends = this && this.__extends || function (c, b) {
    function m() {
        this.constructor = c
    }

    for (var l in b) b.hasOwnProperty(l) && (c[l] = b[l]);
    c.prototype = null === b ? Object.create(b) : (m.prototype = b.prototype, new m)
}, __decorate = this && this.__decorate || function (c, b, m, l) {
    if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) return Reflect.decorate(c, b, m, l);
    switch (arguments.length) {
        case 2:
            return c.reduceRight(function (b, c) {
                return c && c(b) || b
            }, b);
        case 3:
            return c.reduceRight(function (c, e) {
                return void(e && e(b, m))
            }, void 0);
        case 4:
            return c.reduceRight(function (c, e) {
                return e && e(b, m, c) || c
            }, l)
    }
}, __param = this && this.__param || function (c, b) {
    return function (m, l) {
        b(m, l, c)
    }
};
define("vs/languages/typescript/common/typescriptMode", "require exports vs/nls!vs/languages/typescript/common/typescriptMode vs/base/common/winjs.base vs/base/common/uri vs/editor/common/editorCommon vs/editor/common/modes vs/base/common/lifecycle vs/base/common/async vs/editor/common/modes/supports vs/languages/typescript/common/features/tokenization vs/languages/typescript/common/features/quickFixMainActions vs/languages/typescript/common/typescript vs/editor/common/modes/abstractMode vs/platform/thread/common/threadService vs/platform/instantiation/common/descriptors vs/platform/telemetry/common/telemetry vs/platform/thread/common/thread vs/editor/common/modes/supports/onEnter vs/platform/instantiation/common/instantiation".split(" "), function (c, b, m, l, f, e, q, g, w, x, C, A, h, t, d, r, p, k, E, F) {
    var G = function () {
        function b(a, v) {
            var n = this;
            this._listener = Object.create(null);
            this._lastValidationReq = 0;
            this._modelService = a.modelService;
            this._mode = v;
            this._validation = new w.RunOnceScheduler(this._doValidate.bind(this), 750);
            this._modelService && (this._modelService.onModelAdded.add(this._onModelAdded, this), this._modelService.onModelRemoved.add(this._onModelRemoved, this), this._modelService.onModelModeChanged.add(function (a, b) {
                n._onModelRemoved(a);
                n._onModelAdded(a)
            }, this), this._modelService.getModels().forEach(this._onModelAdded, this))
        }

        return b.prototype.dispose = function () {
            this._validation.dispose()
        }, b.prototype.validateOpen = function () {
            this._scheduleValidation()
        }, b.prototype._scheduleValidation = function (a) {
            this._lastValidationReq += 1;
            this._lastChangedResource = a;
            this._validation.schedule()
        }, b.prototype._doValidate = function () {
            var a = this, b = [];
            this._lastChangedResource && b.push(this._lastChangedResource);
            for (var n in this._listener) this._lastChangedResource && n === this._lastChangedResource.toString() || b.push(f["default"].parse(n));
            var c = this._lastValidationReq;
            w.sequence(b.map(function (b) {
                return function () {
                    return a._modelService.getModel(b) ? c === a._lastValidationReq ? a._mode.performSemanticValidation(b) : void 0 : l.Promise.as(void 0)
                }
            })).done(void 0, function (a) {
                return console.warn(a)
            })
        }, b.prototype._onModelAdded = function (a) {
            var b = this;
            if (this._mode._shouldBeValidated(a)) {
                var n, c;
                n = function () {
                    b._scheduleValidation(a.getAssociatedResource())
                };
                c = a.addListener(e.EventType.ModelContentChanged2, function (a) {
                    return n()
                });
                this._listener[a.getAssociatedResource().toString()] = c;
                n()
            }
        }, b.prototype._onModelRemoved = function (a) {
            var b = this._listener[a.getAssociatedResource().toString()];
            b && (b(), delete this._listener[a.getAssociatedResource().toString()])
        }, b
    }(), H = function (b) {
        function a(a, n, c, e) {
            var d = this;
            if (b.call(this, a, n, c), this._disposables = [], this._telemetryService = e, this._threadService && this._threadService.isInMainThread) {
                this._semanticValidator = n.createInstance(G, this);
                this._disposables.push(this._semanticValidator);
                a = this._getProjectResolver();
                if (!a) throw Error("missing project resolver!");
                a instanceof r.AsyncDescriptor ? this._projectResolver = n.createInstance(a, this).then(void 0, function (a) {
                    return console.error(a), h.Defaults.ProjectResolver
                }) : this._projectResolver = l.TPromise.as(a);
                this._projectResolver = this._projectResolver.then(function (a) {
                    return a.setConsumer(d), a
                })
            }
            this.extraInfoSupport = this;
            this.formattingSupport = this;
            this.quickFixSupport = this;
            this.logicalSelectionSupport = this;
            this.outlineSupport = this;
            this.emitOutputSupport = this;
            this.renameSupport = this;
            this.tokenizationSupport = C.createTokenizationSupport(this, C.Language.TypeScript);
            this.electricCharacterSupport = new x.BracketElectricCharacterSupport(this, {
                brackets: [{
                    tokenType: "delimiter.bracket.ts",
                    open: "{",
                    close: "}",
                    isElectric: !0
                }, {
                    tokenType: "delimiter.array.ts",
                    open: "[",
                    close: "]",
                    isElectric: !0
                }, {tokenType: "delimiter.parenthesis.ts", open: "(", close: ")", isElectric: !0}],
                docComment: {scope: "comment.doc", open: "/**", lineStart: " * ", close: " */"}
            });
            this.referenceSupport = new x.ReferenceSupport(this, {
                tokens: ["identifier.ts"],
                findReferences: function (a, b, n) {
                    return d.findReferences(a, b, n)
                }
            });
            this.declarationSupport = new x.DeclarationSupport(this, {
                tokens: ["identifier.ts", "string.ts", "attribute.value.vs"],
                findDeclaration: function (a, b) {
                    return d.findDeclaration(a, b)
                }
            });
            this.parameterHintsSupport = new x.ParameterHintsSupport(this, {
                triggerCharacters: ["(", ","],
                excludeTokens: ["string.ts"],
                getParameterHints: function (a, b) {
                    return d.getParameterHints(a, b)
                }
            });
            this.characterPairSupport = new x.CharacterPairSupport(this, {
                autoClosingPairs: [{
                    open: "{",
                    close: "}"
                }, {open: "[", close: "]"}, {open: "(", close: ")"}, {
                    open: '"',
                    close: '"',
                    notIn: ["string"]
                }, {open: "'", close: "'", notIn: ["string", "comment"]}, {open: "`", close: "`"}]
            });
            this.suggestSupport = new x.SuggestSupport(this, {
                triggerCharacters: ["."],
                excludeTokens: ["string", "comment", "number"],
                sortBy: [{type: "reference", partSeparator: "/"}],
                suggest: function (a, b) {
                    return d.suggest(a, b)
                },
                getSuggestionDetails: function (a, b, n) {
                    return d.getSuggestionDetails(a, b, n)
                }
            });
            this.onEnterSupport = new E.OnEnterSupport(this.getId(), {
                brackets: [{open: "{", close: "}"}, {
                    open: "[",
                    close: "]"
                }, {open: "(", close: ")"}],
                regExpRules: [{
                    beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
                    afterText: /^\s*\*\/$/,
                    action: {indentAction: q.IndentAction.IndentOutdent, appendText: " * "}
                }, {
                    beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
                    action: {indentAction: q.IndentAction.None, appendText: " * "}
                }, {
                    beforeText: /^(\t|(\ \ ))*\ \*\ ([^\*]|\*(?!\/))*$/,
                    action: {indentAction: q.IndentAction.None, appendText: "* "}
                }, {beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/, action: {indentAction: q.IndentAction.None, removeText: 1}}]
            })
        }

        return __extends(a, b), a.prototype.dispose = function () {
            this._disposables = g.disposeAll(this._disposables)
        }, a.prototype._shouldBeValidated = function (a) {
            return a.getMode() === this || /\.ts$/.test(a.getAssociatedResource().fsPath)
        }, a.prototype._getProjectResolver = function () {
            return h.Extensions.getProjectResolver() || h.Defaults.ProjectResolver
        }, a.prototype.acceptProjectChanges = function (a) {
            return this._semanticValidator.validateOpen(), this._doAcceptProjectChanges(a)
        }, a.prototype._doAcceptProjectChanges = function (a) {
            return this._worker(function (b) {
                return b.acceptProjectChanges(a)
            })
        }, a.prototype.acceptFileChanges = function (a) {
            for (var b = this, c = 0, d = 0; d < a.length; d++) {
                var e = a[d];
                e.content && (c += e.content.length)
            }
            return this._canAcceptFileChanges(c).then(function (c) {
                return !1 === c ? l.TPromise.wrapError(m.localize(0, null)) : b._doAcceptFileChanges(a).then(function (a) {
                    return b._semanticValidator.validateOpen(), a
                })
            })
        }, a.prototype._canAcceptFileChanges = function (a) {
            return this._worker(function (b) {
                return b.canAcceptFileChanges(a)
            })
        }, a.prototype._doAcceptFileChanges = function (a) {
            return this._worker(function (b) {
                return b.acceptFileChanges(a)
            })
        }, a.prototype._defaultLib = function () {
            var a = this;
            if (!this._defaultLibPromise) {
                var b = [],
                    d = (new l.TPromise(function (a, b) {
                    return c([h.defaultLib.path.substr(1)], a, b)
                })).then(function (a) {
                    b.push({kind: h.ChangeKind.Added, resource: h.defaultLib, content: a})
                }),
                //     g = (new l.TPromise(function (a, b) {
                //     return c([h.annieUI.path.substr(1)], a, b)
                // })).then(function (a) {
                //     b.push({kind: h.ChangeKind.Added, resource: h.annieUI, content: a})
                // }),
                //     k = (new l.TPromise(function (a, b) {
                //     return c([h.tween.path.substr(1)], a, b)
                // })).then(function (a) {
                //     b.push({kind: h.ChangeKind.Added, resource: h.tween, content: a})
                // }),
                //     m = (new l.TPromise(function (a, b) {
                //     return c([h.socket.path.substr(1)], a, b)
                // })).then(function (a) {
                //     b.push({kind: h.ChangeKind.Added, resource: h.socket, content: a})
                // }),
                //     p = (new l.TPromise(function (a, b) {
                //     return c([h.eui.path.substr(1)], a, b)
                // })).then(function (a) {
                //     b.push({kind: h.ChangeKind.Added, resource: h.eui, content: a})
                // }),
                    r = (new l.TPromise(function (a, b) {
                    return c([h.defaultLibES6.path.substr(1)], a, b)
                })).then(function (a) {
                    b.push({kind: h.ChangeKind.Added, resource: h.defaultLibES6, content: a})
                });
                this._defaultLibPromise = l.TPromise.join([d,r]).then(function (c) {
                    return a.acceptFileChanges(b)
                })
            }
            return new w.ShallowCancelThenPromise(this._defaultLibPromise)
        }, a.prototype._syncProjects = function () {
            var a = this;
            return this._projectResolver ? this._defaultLib().then(function (b) {
                return a._projectResolver
            }).then(function (a) {
                return a.resolveProjects()
            }) : void 0
        }, a.prototype.configure = function (a) {
            var c = this;
            a = b.prototype.configure.call(this, a);
            return this._semanticValidator && a.then(function (a) {
                return a && c._semanticValidator.validateOpen()
            }), a
        }, a.prototype._getWorkerDescriptor = function () {
            return r.createAsyncDescriptor2("vs/languages/typescript/common/typescriptWorker2", "TypeScriptWorker2")
        }, a.prototype.getCommentsConfiguration = function () {
            return {lineCommentTokens: ["//"], blockCommentStartToken: "/*", blockCommentEndToken: "*/"}
        }, a.prototype._pickAWorkerToValidate = function () {
            return this._worker(function (a) {
                return a.enableValidator()
            })
        }, a.prototype.performSemanticValidation = function (a) {
            var b = this;
            return this.doValidateSemantics(a).then(function (a) {
                return a ? b.getMissingFiles().then(function (a) {
                    return a ? b._projectResolver.then(function (b) {
                        return b.resolveFiles(a)
                    }) : void 0
                }) : void 0
            })
        }, a.prototype.doValidateSemantics = function (a) {
            return this._worker(function (b) {
                return b.doValidateSemantics(a)
            })
        }, a.prototype.getMissingFiles = function () {
            return this._worker(function (a) {
                return a.getMissingFiles()
            })
        }, a.prototype.getOutline = function (a) {
            return this._worker(function (b) {
                return b.getOutline(a)
            })
        }, a.prototype.findOccurrences = function (a, b, c) {
            return void 0 === c && (c = !1), this._worker(function (d) {
                return d.findOccurrences(a, b, c)
            })
        }, a.prototype.suggest = function (a, b) {
            return this._worker(function (c) {
                return c.suggest(a, b)
            })
        }, a.prototype.getSuggestionDetails = function (a, b, c) {
            return this._worker(function (d) {
                return d.getSuggestionDetails(a, b, c)
            })
        }, a.prototype.getParameterHints = function (a, b) {
            return this._worker(function (c) {
                return c.getParameterHints(a, b)
            })
        }, a.prototype.getEmitOutput = function (a, b) {
            return void 0 === b && (b = void 0), this._worker(function (c) {
                return c.getEmitOutput(a, b)
            })
        }, a.prototype.getWordDefinition = function () {
            return a.WORD_DEFINITION
        }, a.prototype.findReferences = function (a, b, c) {
            return this._worker(function (d) {
                return d.findReferences(a, b, c)
            })
        }, Object.defineProperty(a.prototype, "filter", {
            get: function () {
                return ["identifier.ts", "string.ts"]
            }, enumerable: !0, configurable: !0
        }), a.prototype.rename = function (a, b, c) {
            return this._worker(function (d) {
                return d.rename(a, b, c)
            })
        }, a.prototype.runQuickFixAction = function (a, b, c) {
            var d = this;
            return this._instantiationService.createInstance(A.QuickFixMainActions).evaluate(a, b, c).then(function (e) {
                return e ? e : d.runQuickFixActionInWorker(a, b, c)
            })
        }, a.prototype.runQuickFixActionInWorker = function (a, b, c) {
            return this._worker(function (d) {
                return d.runQuickFixAction(a, b, c)
            })
        }, a.prototype.getQuickFixes = function (a, b) {
            return this._worker(function (c) {
                return c.getQuickFixes(a, b)
            })
        }, a.prototype.getRangesToPosition = function (a, b) {
            return this._worker(function (c) {
                return c.getRangesToPosition(a, b)
            })
        }, a.prototype.findDeclaration = function (a, b) {
            return this._worker(function (c) {
                return c.findDeclaration(a, b)
            })
        }, a.prototype.computeInfo = function (a, b) {
            return this._worker(function (c) {
                return c.computeInfo(a, b)
            })
        }, Object.defineProperty(a.prototype, "autoFormatTriggerCharacters", {
            get: function () {
                return [";", "}", "\n"]
            }, enumerable: !0, configurable: !0
        }), a.prototype.formatDocument = function (a, b) {
            return this._worker(function (c) {
                return c.formatDocument(a, b)
            })
        }, a.prototype.formatRange = function (a, b, c) {
            return this._worker(function (d) {
                return d.formatRange(a, b, c)
            })
        }, a.prototype.formatAfterKeystroke = function (a, b, c, d) {
            return this._worker(function (e) {
                return e.formatAfterKeystroke(a, b, c, d)
            })
        }, a.$_doAcceptProjectChanges = d.AllWorkersAttr(a, a.prototype._doAcceptProjectChanges), a.$_canAcceptFileChanges = d.OneWorkerAttr(a, a.prototype._canAcceptFileChanges), a.$_doAcceptFileChanges = d.AllWorkersAttr(a, a.prototype._doAcceptFileChanges), a.$_pickAWorkerToValidate = d.OneWorkerAttr(a, a.prototype._pickAWorkerToValidate, a.prototype._syncProjects, k.ThreadAffinity.Group3), a.$doValidateSemantics = d.OneWorkerAttr(a, a.prototype.doValidateSemantics, a.prototype._syncProjects, k.ThreadAffinity.Group3), a.$getMissingFiles = d.OneWorkerAttr(a, a.prototype.getMissingFiles, a.prototype._syncProjects, k.ThreadAffinity.Group3), a.$getOutline = d.OneWorkerAttr(a, a.prototype.getOutline, a.prototype._syncProjects, k.ThreadAffinity.Group1), a.$findOccurrences = d.OneWorkerAttr(a, a.prototype.findOccurrences, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$suggest = d.OneWorkerAttr(a, a.prototype.suggest, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$getSuggestionDetails = d.OneWorkerAttr(a, a.prototype.getSuggestionDetails, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$getParameterHints = d.OneWorkerAttr(a, a.prototype.getParameterHints, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$getEmitOutput = d.OneWorkerAttr(a, a.prototype.getEmitOutput, a.prototype._syncProjects, k.ThreadAffinity.Group3), a.WORD_DEFINITION = t.createWordRegExp("$"), a.$findReferences = d.OneWorkerAttr(a, a.prototype.findReferences, a.prototype._syncProjects, k.ThreadAffinity.Group3), a.$rename = d.OneWorkerAttr(a, a.prototype.rename, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$runQuickFixActionInWorker = d.OneWorkerAttr(a, a.prototype.runQuickFixActionInWorker, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$getQuickFixes = d.OneWorkerAttr(a, a.prototype.getQuickFixes, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$getRangesToPosition = d.OneWorkerAttr(a, a.prototype.getRangesToPosition, a.prototype._syncProjects, k.ThreadAffinity.Group1), a.$findDeclaration = d.OneWorkerAttr(a, a.prototype.findDeclaration, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$computeInfo = d.OneWorkerAttr(a, a.prototype.computeInfo, a.prototype._syncProjects, k.ThreadAffinity.Group2), a.$formatDocument = d.OneWorkerAttr(a, a.prototype.formatDocument, a.prototype._syncProjects, k.ThreadAffinity.Group1), a.$formatRange = d.OneWorkerAttr(a, a.prototype.formatRange, a.prototype._syncProjects, k.ThreadAffinity.Group1), a.$formatAfterKeystroke = d.OneWorkerAttr(a, a.prototype.formatAfterKeystroke, a.prototype._syncProjects, k.ThreadAffinity.Group1), a = __decorate([__param(1, F.IInstantiationService), __param(2, k.IThreadService), __param(3, p.ITelemetryService)], a)
    }(t.AbstractMode);
    b.TypeScriptMode = H
});